package com.category.douyijia.controller;

import java.util.ArrayList;
import java.util.List;

import com.category.douyijia.base.BaseModel;
import com.category.douyijia.model.Area;
import com.category.douyijia.model.Log;
import com.category.douyijia.services.AreaService;
import com.category.douyijia.services.LogService;
import com.jfinal.core.Controller;
import com.jfinal.core.NotAction;
import com.jfinal.core.Path;

/**
 * 创建物流信息控制器
 * 可以设置所有物流信息
 * 它可以将那些物流信息更好的显现出来
 * @author jiangmengyang
 *@version v1.0
 *访问页面路径：douyijia.category.com+/log+"/"+action
 */
@Path("/logistic")
public class LogController  extends Controller{
	/**
	  * 创建物流信息在服务文件中的dao 的工具
	  * 这个工具可以利用logService里面的，
	  * 增删改查的功能
	  */
		Log log = LogService.logDao;
		AreaService areaService = new AreaService();
		Area areaDao = AreaService.areaDao;
	    /**
	     * 创建一个非action的方法，
	     * 用于查询物流信息里的信息
	     * @return
	     * 返回所有物流信息的信息
	     */
	@SuppressWarnings({"unchecked","rawtypes"})
	@NotAction
	public List<Log> logAll() {
		return (ArrayList)log.findAll();
    }
	
	/**
	  * 创建一个保存页面模板的方法，
	  * 用于保存页面静态模板
	  */
	    
	 @NotAction
	 private void keepModel() {
		 /*
		  * 创建一个保存多参数的模板，
		  * 在不指定数据类型文件时，
		  * 默认为string的类型
		  */
		 keepPara("logName","logAddress");
		 /*
		  * 创建一个参数模板，
		  * 指定类型为整型
		  */
		 keepPara(Integer.class,"logState");
		 
		/*
		 * 创建一个多参数模板，
		 * 指定参数类型为字符串
		 */
		 keepPara(String.class,"logPid","logType");
		 /*
		  * 创建一个参数模板，
		  * 指定参数类型为字符串
		  */
		 keepPara(String.class,"logId") ;
	 }

/**
 * 创建一个注册java的服务页面
 * 使用服务器提供的模板生成页面
 * 主要用于往页面里添加数据
 */
public void  addtion(){
	 //设置保存数据模板
	 keepModel();
	 //设置网页的模板
	 render("logistics_addtion.jsp");
}
/**
 *创建一个非action得方法
 *查找是私有的，在页面内进行的
 * @param id
 * 通过id查找物流信息表
 * @return
 * 返回一个物流信息对象
 */
	@NotAction
  private Log find_by_id(String id) {
		/*
		 * 如果id不为空结果返回一个物流信息对象，
		 * 查找物流信息表里的所有列
		 * 如果id为空，
		 * 则返回值为空
		 */
	   if(id!=null && !(id.equals(""))) {
		   //this.area等于上面建立的实体类的对象
			   return (Log) this.log.find("select log_name,log_pid,log_address,log_type,log_state from Log where log_id = ?",id);
	   }else {
		   return null;
	   }
  }
	/**
 	 * 如果area不为空则跳转另一个页面
 	 * 如果area为空则返回原来的页面
 	 * 进行页面跳转则用public
 	 * @param area
 	 * 原来的实体类的一个对象
 	 * @param id
 	 * 通过id去查找物流信息表
 	 * 再进行更改
 	 */
 	public void update_by_id( Log log,  String id){
 		if(log!=null && !(log.equals(""))){
 			/*
 			 * oldLog=this.log=log
 			 * 创建一个原来的地址
 			 */
 			Log oldLog= find_by_id(id);
 			this.log._setAttrs(log).update();
 			render("logistics_success.jsp");
 		}else {
			render("logistics_index.jsp");
		}
 	}
 	/**
 	 * 通过id查找物流信息表
 	 * 如果id不为空就删除成功
 	 * 如果id为空则跳转原来的页面
 	 * @param id
 	 * 删除信息表的一个的对象
 	 */
 	private void delete_by_id(String id){
 		if(id!=null && !(id.equals(""))){
 		      Log lg = find_by_id(id);
 		      boolean result = lg.dao().delete();
 		}else {
			render("logistics_index.jsp");
		}
 	}
 /**
  * 如果物流信息表里的信息没有错误的话，
  * 开发者科管理员可以访问并修改页面信息
  */
 public void index() {
	 render("log_index.jsp");
 }
 public Log getArea() {
	return  find_by_id(areaDao.get("area_id"));
	 
 }
}
